package com.ruoyi.web.sso.mapper;

import java.util.List;
import java.util.Map;

import com.ruoyi.web.sso.domain.Menu;
import com.ruoyi.web.sso.domain.vo.SimpleMenuList;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

/**
 * 菜单权限Mapper接口
 * 
 * @author ruoyi
 * @date 2021-10-28
 */
public interface MenuMapper 
{
    /**
     * 查询菜单权限
     * 
     * @param menuId 菜单权限主键
     * @return 菜单权限
     */
    public Menu selectMenuByMenuId(String menuId);

    /**
     * 查询菜单权限列表
     * 
     * @param menu 菜单权限
     * @return 菜单权限集合
     */
    public List<Menu> selectMenuList(Menu menu);

    /**
     * 新增菜单权限
     * 
     * @param menu 菜单权限
     * @return 结果
     */
    public int insertMenu(Menu menu);

    /**
     * 修改菜单权限
     * 
     * @param menu 菜单权限
     * @return 结果
     */
    public int updateMenu(Menu menu);

    /**
     * 删除菜单权限
     * 
     * @param menuId 菜单权限主键
     * @return 结果
     */
    public int deleteMenuByMenuId(String menuId);

    /**
     * 批量删除菜单权限
     * 
     * @param menuIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteMenuByMenuIds(String[] menuIds);

    /**
     * 查询用户系统下的菜单列表
     * @param map
     */
    List<Menu>  selectMenusByStaffId(Map<String,Object> map);



    /**
     * 查询用户系统下的菜单列表
     * @param map
     */
    List<SimpleMenuList>  selectSimpleMenuList(Map<String,Object> map);

    /**
     * 根据角色ID查询菜单
     *
     * @param map roleId 角色ID
     * @return 菜单列表
     */
    List<String>  selectMenuTree(Map<String,Object> map);

    /**
     * 查询是否有父级菜单
     * @param menuId
     * @return
     */
    Integer  selectCountMenuByParentId(String menuId);


    @Select("SELECT m.menu_id as menuId,m.parent_id as parentId ,m.menu_name as menuName, m.order_num as orderNum, m.url,m.target,m.menu_type as menuType ,m.remark,m.perms ,m.visible ,m.icon , m.create_time as createTime" +
            " FROM `menu` m LEFT JOIN role_menu rm on m.menu_id = rm.menu_id WHERE m.platform_id = #{platformId}  and rm.role_id =  #{roleId} and m.deleted = 0 and m.visible= 0 ")
    List<Menu>  roleIdAndPlatformIdByTermMenus(@Param("platformId") String platformId, @Param("roleId")String roleId);
}
